home *** CD-ROM | disk | FTP | other *** search
/ Network PC / Network PC.iso / windows 95 utilities / programming tools / extended pagecontrol / sample1.pas < prev   
Pascal/Delphi Source File  |  1997-04-19  |  9KB  |  325 lines

  1. unit Sample1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   ComCtrls, StdCtrls, Buttons, ExtCtrls, CommCtrl, ExtPage;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     ExtPageControl1: TExtPageControl;
  12.     Page1: TTabSheet;
  13.     Page2: TTabSheet;
  14.     Page3: TTabSheet;
  15.     Edit1: TEdit;
  16.     PanelInfo: TPanel;
  17.     MemoInfo: TMemo;
  18.     BitBtnGo: TBitBtn;
  19.     TabsPosition: TRadioGroup;
  20.     GroupBox1: TGroupBox;
  21.     ButtonColorForm: TButton;
  22.     ButtonColorATab: TButton;
  23.     ButtonColorITab: TButton;
  24.     ButtonColorSheet: TButton;
  25.     GroupBox2: TGroupBox;
  26.     ButtonFontATab: TButton;
  27.     ButtonFontITab: TButton;
  28.     GroupBoxHints: TGroupBox;
  29.     CheckBoxTabHints: TCheckBox;
  30.     GroupBoxWordWrap: TGroupBox;
  31.     CheckBoxWordWrap: TCheckBox;
  32.     GroupBoxDisTab: TGroupBox;
  33.     CheckBoxDisableTab: TCheckBox;
  34.     GroupBoxOwnerDraw: TGroupBox;
  35.     CheckBoxColorTabs: TCheckBox;
  36.     CheckBoxColorPages: TCheckBox;
  37.     GlyphsPosition: TRadioGroup;
  38.     RadioGroupTabStyle: TRadioGroup;
  39.     ExtTabControl1: TExtTabControl;
  40.     CheckBoxDisableTab2: TCheckBox;
  41.     ExtTabControl2: TExtTabControl;
  42.     PanelTabControl2: TPanel;
  43.     LabelTabControl1: TLabel;
  44.     LabelTabControl2: TLabel;
  45.     procedure FormCreate(Sender: TObject);
  46.     procedure BitBtnGoClick(Sender: TObject);
  47.     procedure TabsPositionClick(Sender: TObject);
  48.     procedure ButtonColorFormClick(Sender: TObject);
  49.     procedure ButtonColorATabClick(Sender: TObject);
  50.     procedure ButtonColorITabClick(Sender: TObject);
  51.     procedure ButtonColorSheetClick(Sender: TObject);
  52.     procedure ButtonFontATabClick(Sender: TObject);
  53.     procedure ButtonFontITabClick(Sender: TObject);
  54.     procedure CheckBoxTabHintsClick(Sender: TObject);
  55.     procedure CheckBoxWordWrapClick(Sender: TObject);
  56.     procedure CheckBoxDisableTabClick(Sender: TObject);
  57.     procedure CheckBoxColorTabsClick(Sender: TObject);
  58.     procedure CheckBoxColorPagesClick(Sender: TObject);
  59.     procedure GlyphsPositionClick(Sender: TObject);
  60.     procedure RadioGroupTabStyleClick(Sender: TObject);
  61.     procedure CheckBoxDisableTab2Click(Sender: TObject);
  62.     procedure ExtTabControl2DrawTab(Control: TWinControl; Index: Integer;
  63.       ActiveTab: Boolean; const RectFg, RectBg: TRect;
  64.       State: TOwnerDrawState);
  65.     procedure ExtTabControl2Change(Sender: TObject);
  66.   private
  67.     procedure DrawColoredTab(Control: TWinControl; Index: Integer;
  68.       ActiveTab: Boolean; const RectFg, RectBg: TRect; State: TOwnerDrawState);
  69.     procedure ChangeColored(Sender: TObject);
  70.     function ColorFromIndex(Index: Integer): TColor;
  71.   public
  72.   end;
  73.  
  74. var
  75.   Form1: TForm1;
  76.  
  77. implementation
  78.  
  79. {$R *.DFM}
  80.  
  81. uses ShellApi;
  82.  
  83. // creation of the form
  84. procedure TForm1.FormCreate(Sender: TObject);
  85. begin
  86.   TabsPosition.Enabled:= ExtPageControl1.IsNewComCtl;
  87.   ExtTabControl2.TabIndex:= -1;
  88. end;
  89.  
  90. procedure TForm1.BitBtnGoClick(Sender: TObject);
  91. begin
  92.   ShellExecute(Application.Handle, 'open',
  93.                'http://ourworld.compuserve.com/homepages/praxisservice/',
  94.                nil, nil, SW_NORMAL);
  95. end;
  96.  
  97. procedure TForm1.TabsPositionClick(Sender: TObject);
  98. begin
  99.   with ExtPageControl1 do begin
  100.     LockWindowUpdate(Handle);
  101.     Case TabsPosition.ItemIndex Of
  102.       0: TabPosition:= tabPosTop;
  103.       1: TabPosition:= tabPosLeft;
  104.       2: TabPosition:= tabPosRight;
  105.       3: TabPosition:= tabPosBottom;
  106.     End;
  107.     RadioGroupTabStyle.Enabled:= TabPosition = tabPosTop;
  108.     if not RadioGroupTabStyle.Enabled then
  109.       RadioGroupTabStyle.ItemIndex:= 0;
  110.     LockWindowUpdate(0);
  111.   end;
  112. end;
  113.  
  114. procedure TForm1.ButtonColorFormClick(Sender: TObject);
  115. begin
  116.   with TColorDialog.Create(Application) do try
  117.     Color:= Form1.Color;
  118.     if Execute then Form1.Color:= Color;
  119.   finally
  120.     Free;
  121.   end;
  122. end;
  123.  
  124. procedure TForm1.ButtonColorATabClick(Sender: TObject);
  125. begin
  126.   with TColorDialog.Create(Application) do try
  127.     Color:= ExtPageControl1.TabActiveColor;
  128.     if Execute then begin
  129.       ExtPageControl1.TabActiveColor:= Color;
  130.       CheckBoxColorTabs.Checked:= False;
  131.     end;
  132.   finally
  133.     Free;
  134.   end;
  135. end;
  136.  
  137. procedure TForm1.ButtonColorITabClick(Sender: TObject);
  138. begin
  139.   with TColorDialog.Create(Application) do try
  140.     Color:= ExtPageControl1.TabInActiveColor;
  141.     if Execute then begin
  142.       ExtPageControl1.TabInActiveColor:= Color;
  143.       CheckBoxColorTabs.Checked:= False;
  144.     end;
  145.   finally
  146.     Free;
  147.   end;
  148. end;
  149.  
  150. procedure TForm1.ButtonColorSheetClick(Sender: TObject);
  151. begin
  152.   with TColorDialog.Create(Application) do try
  153.     Color:= ExtPageControl1.Color;
  154.     if Execute then ExtPageControl1.Color:= Color;
  155.   finally
  156.     Free;
  157.   end;
  158. end;
  159.  
  160. procedure TForm1.ButtonFontATabClick(Sender: TObject);
  161. begin
  162.   with TFontDialog.Create(Application) do try
  163.     Font:= ExtPageControl1.TabActiveFont;
  164.     if Execute then ExtPageControl1.TabActiveFont:= Font;
  165.   finally
  166.     Free;
  167.   end;
  168. end;
  169.  
  170. procedure TForm1.ButtonFontITabClick(Sender: TObject);
  171. begin
  172.   with TFontDialog.Create(Application) do try
  173.     Font:= ExtPageControl1.TabInActiveFont;
  174.     if Execute then ExtPageControl1.TabInActiveFont:= Font;
  175.   finally
  176.     Free;
  177.   end;
  178. end;
  179.  
  180. procedure TForm1.CheckBoxTabHintsClick(Sender: TObject);
  181. begin
  182.   ExtPageControl1.ShowHint:= CheckBoxTabHints.Checked;
  183. end;
  184.  
  185. procedure TForm1.CheckBoxWordWrapClick(Sender: TObject);
  186. begin
  187.   with ExtPageControl1 do
  188.     if CheckBoxWordWrap.Checked then begin
  189.       TabHeight:= TabHeight + 14;
  190.       TabWordWrap:= True;
  191.       Page1.Caption:= 'This is'#10'Page &1';
  192.       Page2.Caption:= 'This is'#10'Page &2';
  193.     end else begin
  194.       TabHeight:= TabHeight - 14;
  195.       TabWordWrap:= False;
  196.       Page1.Caption:= 'Page &1';
  197.       Page2.Caption:= 'Page &2';
  198.     end;
  199. end;
  200.  
  201. procedure TForm1.CheckBoxDisableTabClick(Sender: TObject);
  202. begin
  203.   with ExtPageControl1 do
  204.     if CheckBoxDisableTab.Checked then begin
  205.       Page2.Enabled:= False;
  206.       Invalidate;
  207.     end else begin
  208.       Page2.Enabled:= True;
  209.       Invalidate;
  210.     end;
  211. end;
  212.  
  213. procedure TForm1.CheckBoxColorTabsClick(Sender: TObject);
  214. begin
  215.   if CheckBoxColorTabs.Checked then
  216.     ExtPageControl1.OnDrawTab:= DrawColoredTab
  217.   else
  218.     ExtPageControl1.OnDrawTab:= nil;
  219.   ExtPageControl1.Invalidate;
  220. end;
  221.  
  222. procedure TForm1.DrawColoredTab(Control: TWinControl;
  223.   Index: Integer; ActiveTab: Boolean; const RectFg, RectBg: TRect;
  224.   State: TOwnerDrawState);
  225. begin
  226.   with TExtPageControl(Control) do begin
  227.     Case Index Of
  228.       0: Canvas.Brush.Color:= RGB(192, 220, 192);  // color of Tab 1
  229.       1: Canvas.Brush.Color:= clYellow;            // color of Tab 2
  230.       2: Canvas.Brush.Color:= RGB(166, 202, 240);  // color of Tab 3
  231.     End;
  232.     Canvas.FillRect(RectBg);
  233.     DefaultDrawTab(Index, RectFg, State);
  234.   end;
  235. end;
  236.  
  237. procedure TForm1.CheckBoxColorPagesClick(Sender: TObject);
  238. begin
  239.   if CheckBoxColorPages.Checked then begin
  240.     ExtPageControl1.OnChange:= ChangeColored;
  241.     ChangeColored(ExtPageControl1);
  242.   end else begin
  243.     ExtPageControl1.OnChange:= nil;
  244.     ExtPageControl1.Color:= clBtnFace;
  245.   end;
  246. end;
  247.  
  248. procedure TForm1.ChangeColored(Sender: TObject);
  249. // change the color of the TabSheet while switching
  250. begin
  251.   with TExtPageControl(Sender) do
  252.     Case ActivePage.PageIndex Of
  253.       0: Color:= RGB(192, 220, 192);  // color of Page 1
  254.       1: Color:= clYellow;            // color of Page 2
  255.       2: Color:= RGB(166, 202, 240);  // color of Page 3
  256.     End;
  257. end;
  258.  
  259. procedure TForm1.GlyphsPositionClick(Sender: TObject);
  260. begin
  261.   with ExtPageControl1 do
  262.     Case GlyphsPosition.ItemIndex Of
  263.       0: begin
  264.         TabGlyphs.Position:= glPosTop;
  265.         TabGlyphs.Spacing:= 0;
  266.         TabHeight:= TabHeight + 10;
  267.       end;
  268.       1: begin
  269.         TabGlyphs.Position:= glPosLeft;
  270.         TabGlyphs.Spacing:= 5;
  271.         TabHeight:= TabHeight - 10;
  272.       end;
  273.     End;
  274. end;
  275.  
  276. procedure TForm1.RadioGroupTabStyleClick(Sender: TObject);
  277. begin
  278.   Case TRadioGroup(Sender).ItemIndex Of
  279.     0: ExtPageControl1.TabStyle:= tabStDefault;
  280.     1: ExtPageControl1.TabStyle:= tabStButton;
  281.   End;
  282. end;
  283.  
  284. procedure TForm1.CheckBoxDisableTab2Click(Sender: TObject);
  285. begin
  286.   ExtTabControl1.TabEnabled[1]:= not CheckBoxDisableTab2.Checked;
  287. end;
  288.  
  289. function TForm1.ColorFromIndex(Index: Integer): TColor;
  290. begin
  291.   Case Index Of
  292.     0: Result:= clWhite;    1: Result:= clBlack;
  293.     2: Result:= clSilver;   3: Result:= clGray;
  294.     4: Result:= clRed;      5: Result:= clMaroon;
  295.     6: Result:= clYellow;   7: Result:= clOlive;
  296.     8: Result:= clLime;     9: Result:= clGreen;
  297.    10: Result:= clAqua;    11: Result:= clTeal;
  298.    12: Result:= clBlue;    13: Result:= clNavy;
  299.    14: Result:= clFuchsia; 15: Result:= clPurple;
  300.    16: Result:= RGB(192, 220, 192);
  301.    17: Result:= RGB(166, 202, 240);
  302.    18: Result:= RGB(255, 251, 240);
  303.    19: Result:= RGB(160, 160, 164);
  304.   Else
  305.     Result:= clBtnFace;
  306.   End;
  307. end;
  308.  
  309. procedure TForm1.ExtTabControl2DrawTab(Control: TWinControl;
  310.   Index: Integer; ActiveTab: Boolean; const RectFg, RectBg: TRect;
  311.   State: TOwnerDrawState);
  312. begin
  313.   with TExtTabControl(Control) do begin
  314.     Canvas.Brush.Color:= ColorFromIndex(Index);
  315.     Canvas.FillRect(RectBg);
  316.   end;
  317. end;
  318.  
  319. procedure TForm1.ExtTabControl2Change(Sender: TObject);
  320. begin
  321.   PanelTabControl2.Color:= ColorFromIndex(ExtTabControl2.TabIndex);
  322. end;
  323.  
  324. end.
  325.